package com.banmao.c03_baseUsage;

import com.banmao.c03_baseUsage.entity.Dog;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.support.ClassPathXmlApplicationContext;

// 注册 Bean
@Slf4j
public class Demo01 {

    public static void main(String[] args) {
        //这个容器，就是自动去 classpath 下面查找配置文件，并根据该配置文件启动容器
        //这行代码，会加载 Spring 的配置文件，并完成容器的初始化
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

        // 通过 name 获取
        Object dog = ctx.getBean("dog");
        log.info("getBean whit name: {}", dog);

        // 通过 name 获取,并指定类型
        Dog dog1 = ctx.getBean("dog", Dog.class);
        log.info("getBean with name&class: {}", dog1);

        // 通过 类型 获取
        // 需要保证该类型的 Bean 只存在一个
//        Dog dog2 = ctx.getBean(Dog.class);
//        log.info("getBean with class: {}", dog2);

        // id 只能定义一个, name 可以定义多个
        Object idDog = ctx.getBean("dog1,dog2");
        Object dog3 = ctx.getBean("dog3");
        Object dog4 = ctx.getBean("dog4");
        log.info("id: {}, name: {}, {}", idDog, dog3, dog4);

    }

}
